% Gnus quick refcard
\def\logoscale{0.11}
\def\version{5.4.56}
\def\date{12 June 1997}
\def\author{Vladimir Alexiev $<$vladimir@cs.ualberta.ca$>$}
\raggedbottom%\raggedright
\newlength{\logowidth}\setlength{\logowidth}{6.861in}
\newlength{\logoheight}\setlength{\logoheight}{7.013in}
\newlength{\keycolwidth}\newlength{\descrcolwidth}
\newenvironment{keys}[1]% #1 is the widest key
  {\nopagebreak\noindent%
   \settowidth{\keycolwidth}{#1}%
   \setlength{\descrcolwidth}{\columnwidth}
   \addtolength{\descrcolwidth}{-\tabcolsep}%
   \addtolength{\descrcolwidth}{-\keycolwidth}%
   \begin{tabular}%
     {@{}l@{\hspace{\tabcolsep}}p{\descrcolwidth}@{}}}%
  {\end{tabular}}
\catcode`\^=12 % allow ^ to be typed literally
\newcommand{\B}[1]{{\bf#1})}    % bold l)etter
\setlength{\fboxsep}{0pt}

\def\Title{\parbox{0.6\columnwidth}{\centering\bf\LARGE%
 Gnus \version\\Quick Refcard}}

\newcommand\Logo[1]{
\makebox[\logoscale\logowidth]{\parbox{1ex}{\vbox to \logoscale\logoheight
{\vfill\special{psfile=gnuslogo.#1}}}}}

\def\CopyRight{\begin{center}\tiny
Copyright \copyright\ 1995 Free Software Foundation, Inc.\\*
Copyright \copyright\ 1995 \author.\\*
Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne
Ingebrigtsen.\\*
and the Emacs Help Bindings feature (C-h b).\\*
Gnus logo copyright \copyright\ 1995 Luis Fernandes.\\*
Quick refcard last edited on \date.
\end{center}}

\def\Notes{
\sec{Notes}
{\samepage
%Many Gnus commands are affected by the numeric prefix. Normally you enter a
%prefix by holding the Meta key and typing a number, but in most Gnus modes
%you don't need to use Meta since the digits are not self-inserting.
%
The prefixed behavior of commands is given in [brackets]. Often the prefix
is used to specify:\par
 [distance] How many objects to move the point over.\par
 [scope] How many objects to operate on (including the current one).\par
 [p/p] The ``Process/Prefix Convention'': If a prefix is given then it
determines how many objects to operate on (negative means backwards). Else if
transient-mark-mode or zmacs-regions is set and the region is active, operate
on the region. Else if there are some objects marked with the process mark \#,
operated on them. Else operate only on the current object.
 [level] A group subscribedness level. Only groups with a lower or
equal level will be affected by the operation. If no prefix is given,
`gnus-group-default-list-level' is used.  If
`gnus-group-use-permanent-levels', then a prefix to the `g' and `l'
commands will also set the default level.\par
 [score] An article score. If no prefix is given,
`gnus-summary-default-score' is used.\\

\begin{keys}{C-c C-i}
C-c C-i & Go to the Gnus online {\bf info}.\\
C-c C-b & Send a Gnus {\bf bug} report.\\
\end{keys}
}}

\def\GroupMode{
\sec{Group Mode}
\begin{keys}{C-c C-a}
RET     & (=) Select this group. [Prefix: how many (read) articles to fetch.
Positive: newest articles, negative: oldest ones.]\\
SPC     & Select this group and display the first unread article. [Same
prefix as above.]\\
?       & Give a very short help message.\\
$<$     & Go to the beginning of the Group buffer.\\
$>$     & Go to the end of the Group buffer.\\
,       & Jump to the lowest-level group with unread articles.\\
.       & Jump to the first group with unread articles.\\
\#      & (M m) Set the process mark on this group. [scope]\\
%^       & Enter the Server buffer mode.\\
a       & Post an {\bf article} to a group.\\
%b       & Find {\bf bogus} groups and delete them.\\
c       & Mark all unticked articles in this group as read ({\bf catch-up}).
[p/p]\\
g       & Check the server for new articles ({\bf get}). [level]\\
j       & {\bf Jump} to a group.\\
l       & (A s) {\bf List} groups with unread articles. [level]\\
m       & {\bf Mail} a message to someone.\\
n       & Go to the {\bf next} group with unread articles. [distance]\\
p       & (DEL) Go to the {\bf previous} group with unread articles.
[distance]\\
q       & {\bf Quit} Gnus.\\
%r       & Read the init file ({\bf reset}).\\
s       & {\bf Save} the `.newsrc.eld' file (and `.newsrc' if
`gnus-save-newsrc-file').\\
u & (S t) Toggle subscription to this group ({\bf unsibscribe}). [p/p]\\
%z       & Suspend (kill all buffers of) Gnus.\\
%B       & {\bf Browse} a foreign server.\\
C       & Mark all articles in this group as read ({\bf catch-up}). [p/p]\\
%F       & {\bf Find} new groups and process them.\\
L       & (A u) {\bf List} all groups. [If no prefix is given, level 7 is the
default]\\
%N       & Go to the {\bf next} group. [distance]\\
%P       & Go to the {\bf previous} group. [distance]\\
Q       & {\bf Quit} Gnus without saving any startup (.newsrc) files.\\
%R       & {\bf Restart} Gnus.\\
U & (S s) Prompt for a group and toggle its subscription.\\
%V       & Display the Gnus {\bf version} number.\\
%Z       & Clear the dribble buffer.\\
C-c C-a & (A a) List all groups whose names match a regexp ({\bf apropos}).\\
C-c C-d & Show the {\bf description} of this group. [Prefix: re-read it
from the server.]\\
C-c C-l & (A k) {\bf List} all killed groups.\\
C-c C-s & {\bf Sort} the groups by name, number of unread articles, or level
(depending on `gnus-group-sort-function').\\
%C-c C-x & Run all expirable articles in this group through the {\bf expiry}
%process.\\
%C-c M-C-x & Run all articles in all groups through the {\bf expiry} process.\\
C-k & (S k) {\bf Kill} this group.\\
C-w & (S w) Kill all groups in the region.\\
C-y & (S y) {\bf Yank} the last killed group.\\
C-x C-t & {\bf Transpose} two groups.\\
%M-\# & (M u) Remove the process mark from this group. [scope]\\
%M-d     & {\bf Describe} ALL groups. [Prefix: re-read the description from the
%server.]\\
M-f     & Fetch this group's {\bf FAQ} (using ange-ftp).\\
M-g     & Check the server for new articles in this group ({\bf get}). [p/p]\\
%M-n     & Go to the {\bf next} unread group on the same or lower level.
%[distance]\\
%M-p     & Go to the {\bf previous} unread group on the same or lower
%level. [distance]\\
%A d     & List all groups whose names or {\bf descriptions} match a regexp.\\
%A m     & List groups that {\bf match} a regexp and have unread articles.
%[level]\\
%A M     & List groups that {\bf match} a regexp.\\
A z     & List the {\bf zombie} groups.\\
%G a     & Make the Gnus list {\bf archive} group. (nndir over ange-ftp)\\
%G d     & Make a {\bf directory} group (every file must be a posting and files
%must have numeric names). (nndir)\\
%M-e & (G e) {\bf Edit} this group's select method.\\
%G f     & Make a group based on a {\bf file}. (nndoc)\\
G h     & Make the Gnus {\bf help} (documentation) group.\\
%G k     & Make a {\bf kiboze} group. (nnkiboze)\\
%G m     & {\bf Make} a new group.\\
%G p     & Edit this group's {\bf parameters}.\\
%G v     & Add this group to a {\bf virtual} group. [p/p]\\
%G D     & Enter a {\bf directory} as a (temporary) group. (nneething without
%recording articles read.)\\
%G E     & {\bf Edit} this group's info (select method, articles read, etc).\\
%G V     & Make a new empty {\bf virtual} group. (nnvirtual)\\
%M w     & Mark all groups in the current region.\\
%S l     & Set the {\bf level} of this group. [p/p]\\
%S z     & Kill all {\bf zombie} groups.\\
\end{keys}
}

\def\SummaryMode{
\sec{Summary Mode}  % {Summary and Article Modes}
\begin{keys}{C-c C-v}
SPC     & (A SPC, A n) Select an article, scroll it one page, move to the
next one.\\
DEL     & (A DEL, A p, b) Scroll this article one page back. [distance]\\
RET     & Scroll this article one line forward. [distance]\\
=       & Expand the Summary window. [Prefix: shrink it to display the
Article window]\\
^     & (A ^, A r) Go to the parent of this article (the References header).\\
$<$     & (A $<$, A b) Scroll to the beginning of this article.\\
$>$     & (A $>$, A e) Scroll to the end of this article.\\
, & (G b) Go to the best article (the one with highest score).\\
. & (G f) Go to the first unread article.\\
!       & (u, M !, M t) Tick this article (mark it as interesting) and move
to the next one. [scope]\\
?       & (M ?) Mark this article as dormant (only followups are
interesting). [scope]\\
\# & (M P p, M \#) Mark this article with the process mark.\\
$\mid$ & (O p) Pipe this article to a shell command. [p/p]\\
\&      & Execute a command on all articles matching a regexp.
[Prefix: move backwards.]\\
a & (S p) Post an {\bf article} to this group.\\
c & (Z c) Mark all unticked articles as read and go to the next group
({\bf catch-up}).\\
d       & (M d, M r) Mark this article as read and move to the next one.
[scope]\\
e & (B w) {\bf Edit} this article (only in a mail group).\\
f & (S f) Post a {\bf followup} to this article.\\
g & (A g) (Re)fetch this article ({\bf get}). [Prefix: just show the
article.]\\
j       & (G g) Ask for an article number and then {\bf jump} that summary
line.\\
k & (M k) {\bf Kill} all articles with the same subject then select the next
one.\\
l & (G l) Go to the {\bf last} article read.\\
m & (S m) Send a {\bf mail} to some other person.\\
n & (G n) Go to the {\bf next} unread article.\\
o & (C-o, O o) Save this article using the default article saver ({\bf
  output}). [p/p]\\
p       & Go to the {\bf previous} unread article.\\
q & (Z Z, Z Q) {\bf Quit} this group.\\
r & (S r) Mail a {\bf reply} to the author of this article.\\
s & (A s) Perform an i{\bf search} in the article buffer.\\
t & (W t) {\bf Toggle} the displaying of all headers.\\
%v       & Toggle permanent {\bf verbose} displaying of all headers.\\
w & (W l) Remove page breaks ({\bf ^L}) from the article.\\
x & (M M-r) {\bf Expunge} all read articles from this group.\\
C & (S c) {\bf Cancel} this article (only works if it is your own).\\
D       & Mark this article as read and move to the previous one. [scope]\\
F & (S F) Post a {\bf followup} and include the original. [p/p]\\
Q & (Z E) {\bf Quit} without updating the group information.\\
R & (S R) Mail a {\bf reply} and include the original. [p/p]\\
U       & Tick this article and move to the previous one. [scope]\\
%N & (G N) Go to the {\bf next} article.\\
%P & (G P) Go to the {\bf previous} article.\\
%C-d & (A D) Un{\bf digestify} this article into a separate group.\\
C-k & (M K) {\bf Kill} all articles with the same subject as this one.\\
C-t     & {\bf Toggle} truncation of summary lines.\\
C-w     & Mark all articles between point and mark as read.\\
M-^     & Fetch the article with a given Message-ID.\\
M-\# & (M P u, M M-\#) Unmark this article.\\
M-\&    & Execute a command on all articles having the process mark.\\
M-g & (Z G) Check for new articles in this group ({\bf get}).\\
M-k     & Edit this group's {\bf kill} file.\\
%M-n     & (G M-n) Go to the {\bf next} summary line of an unread article.
%[distance]\\
%M-p     & (G M-p) Go to the {\bf previous} summary line of an unread article.
%[distance]\\
M-r     & Search through all previous articles for a regexp.\\
M-s     & {\bf Search} through all subsequent articles for a regexp.\\
M-u     & (M SPC, M c) Clear all marks from this article and move to the next
one ({\bf unmark}). [scope]\\
M-K     & Edit the general {\bf kill} file.\\
M-U     & Clear all marks from this article and move to the previous one
({\bf unmark}). [scope]\\
M-C-b & (T p) Go to the previous thread ({\bf backward}). [distance]\\
M-C-f & (T n) Go to the next thread ({\bf forward}). [distance]\\
M-C-k & (T k) {\bf Kill} the current (sub)thread. [Negative prefix:
tick it, positive prefix: unmark it.]\\
%M-C-l & (T l) {\bf Lower} the score of this thread.\\
%M-C-n & (G C-n) Go to {\bf the} next article with the same subject.\\
%M-C-p & (G C-p) Go to the {\bf previous} article with the same subject.\\
M-C-t & (T T) {\bf Toggle} threading.\\
C-c C-f & (S o m) {\bf Forward} this article by mail to a person.\\
\newlength{\foo}\settowidth{\foo}{C-c C-v}%
\makebox[\foo][l]{C-c C-v C-v}&\rule{4ex}{0pt}
  (X v u) Uudecode and view these series. [p/p]\\
C-c C-r & (W r) Do a Caesar {\bf rotate} (rot13) on the article.\\
%C-c C-s C-a & Sort the summary by {\bf author}.\\
%C-c C-s C-d & Sort the summary by {\bf date}.\\
%C-c C-s C-i & Sort the summary by article score.\\
%C-c C-s C-n & Sort the summary by article {\bf number}.\\
%C-c C-s C-s & Sort the summary by {\bf subject}.\\
%C-c M-C-s & (M S) {\bf Show} all expunged articles.\\
B DEL   & {\bf Delete} the mail article from disk (!). [p/p]\\
B c     & {\bf Copy} this article from any group to a mail group. [p/p]\\
%B e     & {\bf Expire} all expirable articles in this group. [p/p]\\
%B i     & {\bf Import} a random file into this group.\\
B m     & {\bf Move} the article from one mail group to another. [p/p]\\
%B q     & {\bf Query} where will the article go during fancy splitting\\
%B r     & {\bf Respool} this mail article. [p/p]\\
%B M-C-e & {\bf Expunge} (delete from disk) all expirable articles in this
%group %(!). [p/p]\\
%G p     & {\bf Pop} an article off the summary history and go to it.\\
%H d     & (C-c C-d) {\bf Describe} this group. [Prefix: re-read the
%description from the server.]\\
%H f     & Try to fetch the {\bf FAQ} for this group using ange-ftp.\\
%H h     & Give a very short {\bf help} message.\\
%H i     & (C-c C-i) Go to the Gnus online {\bf info}.\\
%H v     & Display the Gnus {\bf version} number.\\
%M b     & Set a {\bf bookmark} in this article.\\
%E       & (M e, M x) Mark this article as {\bf expirable}. [scope]\\
%M B     & Remove the {\bf bookmark} from this article.\\
%M C     & {\bf Catch-Up} the articles that are not ticked.\\
%M D     & Show all {\bf dormant} articles (normally they are hidden unless
%they have any followups).\\
M H     & Catch-Up (mark read) this group to point ({\bf here}).\\
%M C-c   & {\bf Catch-Up} all articles in this group.\\
%M M-D   & Hide all {\bf dormant} articles.\\
%M M-C-r & Expunge all articles having a given mark.\\
%M V c   & {\bf Clear} all marks from all high-scored articles. [score]\\
%M V k   & {\bf Kill} all low-scored articles. [score]\\
%M V m   & {\bf Mark} all high-scored articles with a given mark. [score]\\
%M V u   & Mark all high-scored articles as interesting (tick them). [score]\\
%M P a   & Mark {\bf all} articles (in series order).\\
%M P r   & Mark all articles in the {\bf region}.\\
%M P s   & Mark all articles in the current {\bf series}.\\
%M P t   & Mark all articles in this (sub){\bf thread}.\\
%M P R   & Mark all articles matching a {\bf regexp}.\\
%M P S   & Mark all {\bf series} that already contain a marked article.\\
%M P U   & {\bf Unmark} all articles.\\
O \bf z  & Save this article in {\bf file}, {\bf mh} folder, {\bf mail},
{\bf rmail}, {\bf vm} format. [p/p]\\
%O f     & Save this article in plain {\bf file} format. [p/p]\\
%O h     & Save this article in {\bf mh} folder format. [p/p]\\
%O m     & Save this article in {\bf mail} format. [p/p]\\
%O r     & Save this article in {\bf rmail} format. [p/p]\\
%O v     & Save this article in {\bf vm} format. [p/p]\\
S b     & {\bf Both} post a followup to this article, and send a reply.\\
%S o p   & Forward this article as a {\bf post} to a newsgroup.\\
S s     & {\bf Supersede} this article with a new one (only for own
articles).\\
%S u     & {\bf Uuencode} a file and post it as a series.\\
S B     & {\bf Both} post a followup, send a reply, and include the
original. [p/p]\\
%S O m   & Digest these series and forward by {\bf mail}. [p/p]\\
%S O p   & Digest these series and forward as a {\bf post} to a newsgroup.
%[p/p]\\
%T \#    & Mark this thread with the process mark.\\
%T d     & Move to the next article in this thread ({\bf down}). [distance]\\
T h     & {\bf Hide} this (sub)thread.\\
%T i     & {\bf Increase} the score of this thread.\\
T s     & {\bf Show} the thread hidden under this article.\\
%T u     & Move to the previous article in this {\bf thread ({\bf up}).
%[distance]\\
%T H     & {\bf Hide} all threads.\\
%T S     & {\bf Show} all hidden threads.\\
%V a     & {\bf Add} a new score entry, specifying all elements.\\
%V c     & Specify a new score file as {\bf current}.\\
%V e     & {\bf Edit} the current score alist.\\
%V f     & Edit a score {\bf file} and make it the current one.\\
%V m     & {\bf Mark} all articles below a given score as read.\\
%V s     & {\bf Set} the score of this article.\\
%V t     & Display all score rules applied to this article ({\bf trace}).\\
%V x     & {\bf Expunge} all low-scored articles. [score]\\
%V C     & {\bf Customize} the current score file through a user-friendly
%interface.\\
%V S     & Display the {\bf score} of this article.\\
W b     & Make Message-IDs and URLs in the article to mouse-clickable {\bf
  buttons}.\\
%W c     & Remove extra {\bf CRs} (^M) from the article.\\
%W f     & Look for and display any X-{\bf Face} headers.\\
%W m     & Toggle {\bf MIME} processing.\\
%W o     & Treat {\bf overstrike} or underline (^H\_) in the article.\\
%W q     & Treat {\bf quoted}-printable in the article.\\
W w     & Do {\bf word} wrap in the article.\\
W T e   & Convert the article timestamp to time {\bf elapsed} since sent.\\
W T l   & Convert the article timestamp to the {\bf local} timezone.\\
W T u   & (W T z) Convert the article timestamp to {\bf UTC} ({\bf Zulu},
GMT).\\
W W a   & Hide unwanted parts of the article (citation, headers, signature).\\
%W W c   & Hide article {\bf citation}.\\
%W W h   & Hide article {\bf headers}.\\
%W W s   & Hide article {\bf signature}.\\
%W W C-c & Hide article {\bf citation} using a more intelligent algorithm.\\
W H a   & Highlight {\bf all} parts of the article (citation, headers,
signature).\\
%W H c   & Highlight article {\bf citation}.\\
%W H h   & Highlight article {\bf headers}.\\
%W H s   & Highlight article {\bf signature}.\\
%X b     & Un-{\bf binhex} these series. [p/p]\\
%X o     & Simply {\bf output} these series (no decoding). [p/p]\\
%X p     & Un{\bf pack} these {\bf postscript} series. [p/p]\\
%X s     & Un-{\bf shar} these series. [p/p]\\
%X u     & {\bf Uudecode} these series. [p/p]\\
%X   \bf z & Decode these series. [p/p]\\
%X   \bf Z & Decode and save these series. [p/p]\\
%X v \bf z & Decode and view these series. [p/p]\\
%X v \bf Z & Decode, save and view these series. [p/p]\\
%Z n     & Mark all articles as read and go to the {\bf next} group.\\
%Z C     & Mark all articles as read ({\bf catch-up}) and exit.\\
%Z N     & Exit and go to the {\bf next} group.\\
%Z P     & Exit and go to the {\bf previous} group.\\
%Z R     & Exit this group, and then enter it again ({\bf reenter}). [Prefix:
%select all articles, read and unread.]\\
\end{keys}
}

\def\ArticleMode{
\sec{Article Mode}
{\samepage
All keys for Summary mode also work in Article mode.
Additional keys:

\begin{keys}{C-c C-m}
RET     & (middle mouse button) Activate the button at point to follow
an URL or Message-ID.\\
TAB     & Move the point to the next button.\\
h       & (s) Go to the {\bf header} line of the article in the {\bf
summary} buffer.\\
C-c ^   & Get the article with the Message-ID near point.\\
C-c C-m & {\bf Mail} reply to the address near point (prefix: include the
original).\\
\end{keys}
}}

\def\sec{\subsubsection*}
\catcode`\^=7 % restore ^

\documentstyle{article}
\textwidth 7.26in \textheight 10in \topmargin -1.0in
% the same settings work for A4, although there is a bit of space at the
% top and bottom of the page.
\oddsidemargin -0.5in \evensidemargin -0.5in
\begin{document}
\twocolumn\scriptsize\pagestyle{empty}

{\centering\Logo{quickref}\qquad\qquad\Title}

\vspace*{\fill}
\Notes
\GroupMode
\ArticleMode
\vspace*{\fill}
\CopyRight
\pagebreak

\SummaryMode
\end{document}
